From cef3a40634164bf20408748091faa9584b044051 Mon Sep 17 00:00:00 2001 From: "kaf24@viper.(none)" Date: Sun, 6 Feb 2005 12:48:07 +0000 Subject: [PATCH] bitkeeper revision 1.1159.223.73 (42061207JyX53LmlrclgfiWwVqnF7w) Avoid large stack frame in arch_dom0_op by dynamically allocating space for getmeminfo batch. Signed-off-by: keir.fraser@cl.cam.ac.uk --- xen/arch/x86/dom0_ops.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/dom0_ops.c b/xen/arch/x86/dom0_ops.c index d212324260..b6ade93ee7 100644 --- a/xen/arch/x86/dom0_ops.c +++ b/xen/arch/x86/dom0_ops.c @@ -216,7 +216,7 @@ long arch_do_dom0_op(dom0_op_t *op, dom0_op_t *u_dom0_op) domid_t dom = op->u.getpageframeinfo2.domain; unsigned long *s_ptr = (unsigned long*) op->u.getpageframeinfo2.array; struct domain *d; - unsigned long l_arr[GPF2_BATCH]; + unsigned long *l_arr; ret = -ESRCH; if ( unlikely((d = find_domain_by_id(dom)) == NULL) ) @@ -227,6 +227,8 @@ long arch_do_dom0_op(dom0_op_t *op, dom0_op_t *u_dom0_op) ret = -E2BIG; break; } + + l_arr = (unsigned long *)alloc_xenheap_page(); ret = 0; for( n = 0; n < num; ) @@ -291,6 +293,8 @@ long arch_do_dom0_op(dom0_op_t *op, dom0_op_t *u_dom0_op) n += j; } + free_xenheap_page((unsigned long)l_arr); + put_domain(d); } break; -- 2.30.2